#pragma once

#include "imcsettingvalue.h"

namespace MCCommon
{

class MCSettings;
class MCAPI MCSettingListValue : public IMCSettingValue
{
public:
    /**
     * Default constructor.
     * 
     */
    MCSettingListValue();

    /**
     * Constructor.
     * 
     */
    MCSettingListValue
    (
        const MCSettings& value
    );

    /**
     * Destructor.
     * 
     */
    ~MCSettingListValue();

    /**
     * Get value type.
     * 
     */
    virtual ValueType GetValueType() const;

    /**
     * Create a new object of value.
     * 
     */
    virtual IMCSettingValue* Clone() const;

    /**
     * Get bool
     * 
     */
    virtual bool GetBool() const;

    /**
     * Get integer.
     * 
     */
    virtual int GetInt() const;

    /**
     * Get double.
     * 
     */
    virtual double GetDouble() const;

    /**
     * Get string.
     * 
     */
    virtual std::string GetString() const;

    /**
     * Get MCSettings.
     * 
     */
    const MCSettings& GetMCSettings() const;

private:

    DISALLOW_COPY_AND_ASSIGN(MCSettingListValue);

private:
    // MCSettings
    MCSettings* fpSettingsValue;
};

} // end of namespace MCCommon.